package com.vueperson.vueperson.t1.test01;

public class test02 {
    public static void main(String[] args) {
        //父类型引用指向子类型对象
        Animal a1=new Cat();//向上转型,自动类型转换
        a1.eat();

//        程序在编译期只知道a1是Animal类型(静态绑定),
//        程序在运行期,堆中的实际对象是Cat类型,绑定的方法是Cat下的eat方法(动态绑定)
        Animal a2=new Cat();//向下转型，强制类型转换
        ((Cat) a2).run();

        Animal a3=new Dog();
      //  Cat c2=(Cat) a3; //java.lang.ClassCastException
        //在做向下转型时使用instanceof判断,防止ClassCastException异常
        if (a3 instanceof Cat) {
            Cat c2=(Cat) a3;
        }

    }
}
